0

私は次のモデルを持っています:

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class CommonUser(models.Model):
  user = models.OneToOneField(User)
  field = models.CharField(max_length=20)

class SpecificUserA(models.Model):
  user = models.OneToOneField(CommonUser)
  field_a = models.CharField(max_length=20)

class SpecificUserB(models.Model):
  user = models.OneToOneField(CommonUser)
  field_b = models.CharField(max_length=20)

SpecificUserAこれにより、 と の間で情報を共有できますSpecificUserB。これは、1 つのオブジェクトに対してSpecificUserAとオブジェクトの両方を作成することを妨げません。SpecificUserBUser

u = User.objects.create_user(username='user1')
u.save()

u.commonuser = CommonUser(field="user1 field data")
u.commonuser.save()

u.commonuser.specificusera = SpecificUserA(field_a="user1 field_a data")
u.commonuser.specificusera.save()

# how can I prevent this?
u.commonuser.specificuserb = SpecificUserB(field_b="user1 field_b data")
u.commonuser.specificuserb.save()

Userオブジェクトを作成する前に、特定のユーザー名を持つオブジェクトが存在するかどうかを確認する条件を設定できることは知っていますSpecificが、上記のシナリオをキャッチするチェックはありますか?

4

0 に答える 0