Поля ForeignKey не обновляются в одном POST-запросе
У меня есть модель в 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)
Теперь, когда я делаю POST запрос в django rest framework, он принимает все поля данных, кроме streamID и userID (которые являются foreignkeys), это произошло после того, как я изменил 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__"
Для обновления foreignkey необходимо отправить первичный ключ userId/streamId вместо строки. Надеюсь, это поможет вам решить вашу проблему.