我认为此错误来自我可能写错了的这一行。任何人都可以分享为什么在views.py中将其写错了吗?我知道我必须指定此字段,因为它是模型类别的外键:
message.category_id = self.categories.id
views.py
class AddMessageView(DetailView, FormView):
model = Room
form_class = MessageForm
template_name = 'add_message.html'
def get_object(self, queryset=None):
return get_object_or_404(Room, type1__slug=self.kwargs['type1_slug'],slug=self.kwargs['room_slug'])
def form_valid(self, form):
message = form.save(commit=False)
message.category_id = self.categories.id
message.name = self.request.user
message.room = self.get_object()
message.save()
models.py
class Category(models.Model):
categories = models.CharField(max_length=80, null=False, blank=False, unique=True)
slug = models.SlugField(blank=True, unique=True)
class Room(models.Model):
categorical = models.ForeignKey(Category, related_name='categorical', on_delete=models.CASCADE)
slug = models.SlugField(blank=True)
class Message(models.Model):
category = models.ForeignKey(Category, related_name='category', on_delete=models.CASCADE)
room = models.ForeignKey(Room, related_name='messages', on_delete=models.CASCADE)
name = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='naming', on_delete=models.CASCADE)
您假设正确。self.categories
此属性categories
从何而来?我假设消息的类别与房间的类别相同,但是为什么要存储消息的类别?(无论如何,您都可以从房间中获取它,即最终会有重复的数据)如果您希望类别与房间类别相同,则无论如何:
def form_valid(self, form):
room = self.get_object()
message = form.save(commit=False)
message.category = room.categorical
message.name = self.request.user
message.room = room
message.save()
另外为什么外键categorical
的related_name是相同的,即categorical
?相关对象使用相关名称,即category_instance.categorical没什么意义(而category_instance.rooms则更有意义)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句