所有者id不能为空。关系数据库

2024-09-27 00:18:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在与数据库中的表建立关系。目前我有一个有三张桌子的教程课。例如(auth\u user表、partyEvent表、friends表)

现在用户应该可以只创建一个partyEvent。朋友可以加入用户创建的任意数量的partyEvent。 Friends模型中的所有者id告诉partyEvent和用户“Friends”属于谁

我可以限制用户只创建一个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')

Tags: 用户nameauthiddefaultonmodelsdelete
2条回答

序列化程序模型中有ReadOnlyField,这意味着序列化对象在数据库中发布时将排除所有者字段

出现此问题的原因是,序列化程序中的ReadOnlyField仅包含在数据检索中。当通过序列化程序发布数据时,ReadOnlyFields被排除

为了解决你的问题,试试这个

class FriendsSerializer(serializers.HyperlinkedModelSerializer):
    owner = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
    class Meta:
        model = Friends
        fields = ('id','name','owner')

相关问题 更多 >

    热门问题