【发布时间】:2023-03-25 06:50:02
【问题描述】:
我有 ita MessageModel,它有一个字段 user_name,它是 Room 模型的一个实例。我想保存当前用户内联的所有消息,但是当我尝试保存作为房间模型实例的用户名时......发生错误,例如--> ValueError:无法分配“”:“MessageModel.user_name " 必须是一个 "Room" 实例。 我有另一个模型 DateTimeField,它具有以下字段 datecreated 和 date_modified。
models.py-->
class Room(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='owner', null=True)
def __str__(self):
return str(self.user.username)
class MessageModel(DateTimeModel):
user_name = models.ForeignKey(Room, null=True, blank=True, on_delete=models.SET_NULL)
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name = 'sender', on_delete=models.CASCADE, null=True)
message = models.TextField('body')
recipients = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='recipients')
class Meta:
ordering = ['-id']
forms.py-->
class MessageModelInline(admin.TabularInline):
model = MessageModel
class RoomAdmin(admin.ModelAdmin):
inlines = [MessageModelInline]
admin.site.register(Room, RoomAdmin)
@database_sync_to_async
def save_message_to_db(self,username, message):
user_name = self.user_name
print(type(user_name)) # <class 'django.contrib.auth.models.User'>
return MessageModel.objects.create(user_name=user_name, user=username, message=message)
任何解决方案都将受到高度赞赏。谢谢你
【问题讨论】:
-
MessageModel 中的用户名应该是 Room 模型的一个实例
-
MessageModel 中的 user_name 是 Room 模型的 ForeignKey。不是 Room 的实例吗?
标签: python django django-models django-rest-framework django-channels