Вы можете пометить поле user
как unique=True
. Это в основном то, что делает поле OneToOneField
[Django -doc] . Таким образом, это означает, что у пользователя есть самое большее одна связанная запись:
from django.conf import settings
class UserSettings(models.Model):
user = <b>models.OneToOneField(</b>
settings.USER_MODEL,
on_delete=models.CASCADE
<b>)</b>
# …
Если вы, таким образом, намереваетесь вставить вторую строку для того же пользователя, это вызовет ошибку (учитывая база данных обеспечивает такое ограничение, но почти все базы данных делают это). Более того, если вы используете форму, Django также выполнит такую проверку.