Я пытаюсь создать реляционную базу данных, но когда вызывается конструктор, я получаю следующую ошибку: peewee.IntegrityError: NOT NULL constraint failed language.content_id
. Я пробовал по-разному, чтобы это сделать, но есть проблема при вызове models.Language.create()
. Другие вызовы для вставки в таблицы работают очень хорошо. Любые идеи, как я могу это исправить? Пожалуйста помоги.peewee.IntegrityError: NOT NULL constraint failed
Вот мой код:
models.py
class User(UserMixin, Model):
username = CharField(unique=True)
email = CharField(unique=True)
password = CharField(max_length=100)
joined_at = DateTimeField(default=datetime.datetime.now)
is_admin = BooleanField(default=False)
class Meta:
database = DATABASE
order_by = ('-joined_at',)
def get_post(self):
return Post.select().where(Post.user == self)
@classmethod
def create_user(cls, username, email, password, admin=False):
try:
cls.create(
username=username,
email=email,
password=generate_password_hash(password),
is_admin=admin)
except IntegrityError:
raise ValueError("User already exists")
class Post(Model):
content = TextField()
class Meta:
database = DATABASE
class Category(Model):
category = TextField()
class Meta:
database = DATABASE
class Language(Model):
timestamp = DateTimeField(default=datetime.datetime.now)
content = ForeignKeyField(rel_model=Post, related_name='contents')
category = ForeignKeyField(rel_model=Category, related_name='topic')
user = ForeignKeyField(
rel_model=User,
related_name='units'
)
language = TextField()
class Meta:
database = DATABASE
app.py
@app.route('/new_post', methods=('GET', 'POST'))
@login_required
def post():
form = forms.PostForm()
if form.validate_on_submit():
models.Post.create(content=form.content.data)
models.Category.create(category=form.choice.data.strip())
models.Language.create(user=g.user._get_current_object(),
language=form.language.data.strip())
flash("Message posted! Thanks!", "success")
return redirect(url_for('index'))
return render_template('post.html', form=form)
Hi @coleifer. У меня есть контент как ForeignKeyField, поэтому я не устанавливаю 'content = some_post_obj'. – Yelp
Ух, вот почему вы должны * установить его. – coleifer
У меня все еще есть ошибка. Но мне не имеет смысла называть два раза метод создания контента с помощью модели Post и модели языка. Так ли это должно быть? – Yelp