如何自动与用户设置Manytomany关系
如何与创建此事件的用户自动设置所有者字段?
事件模型:
class Event(models.Model):
title = models.CharField(max_length=50, unique=True)
describe = models.TextField(max_length=500)
type_of_event = models.IntegerField(choices=TYPE_OF_EVENT_CHOICE, default=0)
img = models.ImageField(null=True, blank=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
event_date = models.DateTimeField()
city = models.ForeignKey(City, verbose_name='City', on_delete=models.CASCADE)
address = models.CharField(max_length=60)
ticket_price = models.IntegerField(default=0)
email = models.EmailField(max_length=100, verbose_name='Contact email',
validators=[validate_email])
事件的视图:
class CreateEventView(generics.CreateAPIView):
serializer_class = EventDetailSerializer
permission_classes = [IsAuthenticated]
Event的序列化器:
class EventDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = ['title', 'img', 'type_of_event', 'describe', 'event_date', 'city', 'address',
'ticket_price', 'email']
How to automatically set owner field with the user which creates this event?
Event model:
class Event(models.Model):
title = models.CharField(max_length=50, unique=True)
describe = models.TextField(max_length=500)
type_of_event = models.IntegerField(choices=TYPE_OF_EVENT_CHOICE, default=0)
img = models.ImageField(null=True, blank=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
event_date = models.DateTimeField()
city = models.ForeignKey(City, verbose_name='City', on_delete=models.CASCADE)
address = models.CharField(max_length=60)
ticket_price = models.IntegerField(default=0)
email = models.EmailField(max_length=100, verbose_name='Contact email',
validators=[validate_email])
Event`s view:
class CreateEventView(generics.CreateAPIView):
serializer_class = EventDetailSerializer
permission_classes = [IsAuthenticated]
Event`s serializer:
class EventDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Event
fields = ['title', 'img', 'type_of_event', 'describe', 'event_date', 'city', 'address',
'ticket_price', 'email']
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以通过覆盖
code>
createeeventView
的方法来实现这一目标:如下所示:正如大卫指出的那样,请记住,请记住
foreferkey
是不是 aa多一对多的关系,那将是Manytomanyfield
。给定上下文,我假设foreferkey
(所有者)实际上是所需的行为,所以一切都很好。You can achieve that by overriding the
perform_create
method of yourCreateEventView
, something like this:And as David pointed out, keep in mind that a
ForeignKey
is not a a many-to-many relation, that would be aManyToManyField
. Given the context, I assume theForeignKey
(owner) is actually the desired behavior, so all good.