【问题标题】:ForeignKey fields are not updated in one POST requestForeignKey 字段不会在一个 POST 请求中更新
【发布时间】:2022-08-24 07:29:34
【问题描述】:

我在 Django 中有一个模型,它具有对其他模型的外键引用,

class Comments(models.Model):
    commentId = models.CharField(max_length=100, primary_key=True)
    chatType = models.CharField(max_length=100)
    commentContents = get_nullable_text_field()
    timeStamp = models.CharField(max_length=100)
    userName=models.CharField(max_length=100,default=\"\")
    profilepicurl=models.CharField(max_length=100,default=\"\")
    userId=models.ForeignKey(Userprofile,default=None, blank=True, null=True,on_delete=models.SET_NULL)
    streamId=models.ForeignKey(Streams,default=None, blank=True, null=True,on_delete=models.CASCADE)
    history = AuditlogHistoryField(pk_indexable=False)

现在,当我在 django rest 框架中发出 POST 请求时,它会获取除 streamID 和 userID(它们是外键)之外的所有数据字段,这发生在我将 streamID 和 userID 从 models.charfield 更改为 models.ForeignKey 之后。当我发送具有相同正文的第二个 POST 请求时,它可以工作。

这是序列化程序类

class CommentsSerializer(GlanceSerializer):
commentId = serializers.CharField(required=True)
@transaction.atomic()
def update_or_create(self, validated_data, create_only):
    id_field_value = {\'commentId\': validated_data[\'commentId\']}
    data, _ = do_update_or_create(validated_data, create_only,
                                  Comments, id_field_value)
    return data

class Meta:
    model = Comments
    fields = \"__all__\"

    标签: django serialization django-rest-framework foreign-keys


    【解决方案1】:

    要更新外键,您必须发送 userId/streamId 的主键而不是字符串。我希望这能帮助你解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-23
      • 1970-01-01
      • 2023-03-16
      • 2018-12-25
      相关资源
      最近更新 更多