我正在与数据库中的表建立关系。目前我有3个表的教程。例如(auth_user表,partyEvent表,朋友表)。
现在用户应该只能创建一个partyEvent。朋友可以加入由用户创建的任意数量的partyEvent。 Friends模型中的所有者ID告诉partyEvent和User'朋友'属于。
我可以限制用户只创建一个partyEvent。但是当我尝试将朋友注册到partyEvent时,不会发送所有者的ID。而是默认值:
owner = models.OneToOneField('auth.User', related_name = 'party', on_delete=models.CASCADE, default='1')
而是发送。为什么会这样?
模型
class PartyEvent(models.Model):
name = models.CharField(max_length=100, blank=False)
location = models.CharField(max_length=100, blank=False)
owner = models.OneToOneField('auth.User', related_name = 'party', on_delete=models.CASCADE, default='1')
class Friends(models.Model):
name = models.CharField(max_length=100, blank=False)
owner = models.ForeignKey('auth.User',related_name = 'friends', on_delete=models.CASCADE, default='1')
串行
class FriendsSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.ReadOnlyField(source='owner.id')
class Meta:
model = Friends
fields = ('id','name','owner')
答案 0 :(得分:0)
您在序列化程序模型中有ReadOnlyField,这意味着序列化对象将在DB中发布时排除所有者字段。
答案 1 :(得分:0)
您遇到问题的原因是,序列化程序中的ReadOnlyField只会包含在数据检索中。通过序列化程序发布数据时,将排除ReadOnlyFields。
要解决您的问题,请尝试此操作,
class FriendsSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
class Meta:
model = Friends
fields = ('id','name','owner')