#django #django-models
#django #django-модели
Вопрос:
Я хочу создать запись в этом Something model
в python manage.py оболочка, использующая это Someting.objects.create(discussion_title="General", user_username="admin", content="Hello")
пример модели
class Discussion(models.Model):
title = models.CharField(max_length=255, unique=True, blank=False,)
users = models.ManyToManyField(User, blank=True, )
class Something(models.Model):
user = models.ForeignKey(User,
on_delete=models.CASCADE)
discussion = models.ForeignKey(Discussion, on_delete=models.CASCADE)
timestamp = models.DateTimeField(auto_now_add=True)
content = models.TextField(unique=False, blank=False)
Я получаю эту ошибку
TypeError: Something() got an unexpected keyword argument 'discussion_title'
Ответ №1:
Во-первых, вы должны использовать double под bar __
, чтобы использовать выражение отношения модели django.
Someting.objects.get(discussion__title="General", user__username="admin", content="Hello")
Во-вторых, вы не можете использовать выражение отношения double under bar при создании объекта.
если вы хотите создать объект в отношении, вы должны создавать шаг за шагом. следуйте ответу @Nicolas Appriou
Ответ №2:
В вашей модели Something нет поля discussion_title . Для этого вам необходимо создать экземпляр обсуждения.
Эта модель также не имеет модели user_username .
discussion = Discussion.objects.create(title="Foobar")
discussion.users.add(User.objects.create(username="Ham")
Something.objects.create(
discussion=discussion,
)
Комментарии:
1. Можете ли вы объяснить это подробнее или направить меня к некоторым документам? Как, скажем
title = "Foobar"
, уже существует в модели обсуждения, и у меня есть пользовательusername = "Ham"
. Будет ли это работать?2. Это основы доступа к базе данных в django. Я могу только дать вам ссылку на документацию модели. docs.djangoproject.com/en/3.1/topics/db/models/#relationships