这里我有一个用户模型:
class User(AbstractUser):
plate_number = models.CharField(max_length=10, blank=True, null=True)和一个车辆模型:
class Vehicle(models.Model):
plate_number = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)我不认为我的设计是正确的,因为plate_number在车辆模型中不是CharField,而是这样的用户。
如何使两个plate_number在两个模型中完全相同?
其逻辑是,用户可能没有,但是车辆必须有--在用户模型中存在相同的plate_number,用户最多只能拥有一辆车辆,而车辆只属于一个用户,我希望任何一个字段的更改,然后对应字段自动进行相同的更改。
这个是可能的吗?怎么样
class User(AbstractUser):
vehicle = models.OneToOneField('ride.Vehicle', blank=True, null=True, on_delete=models.SET_NULL())和
class Vehicle(models.Model):
plate_number = models.CharField(max_length=10, on_delete=models.CASCADE, primary_key=True, blank=False, null=False)这个能行吗?
发布于 2019-02-06 06:55:19
我不认为有重复的车牌号码有任何意义。由于您已经定义了用户和车辆之间的OneToOne关系,意味着一个用户只能拥有一辆车。因此,我认为最好是在车辆模型类中同时保持车牌号码和OneToOne连接,如下所示:
class Vehicle(models.Model):
plate_number = models.CharField(max_length=10)
user= models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True, related_name="vehicle")在这里,我定义了车辆模型中的related_name。
因此,在这个设置中,用户只能有一个车牌号码,因为他与一辆车有连接。在访问这些数据时,您可以通过以下方法获得:
user = User.objects.first()
user.vehicle # Vehicle object
user.vehicle.plate_number # plate number发布于 2019-02-06 04:40:22
这样做是可以的
用户模型:
class User(AbstractUser):
plate_number = models.CharField(max_length=10, blank=True, null=True)车辆模型:
class Vehicle(models.Model):
plate_number = models.CharField(max_length=10, on_delete=models.CASCADE, primary_key=True, blank=False, null=False)
user= models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)因此,在保存车辆时,使用这个车牌号码检查用户,然后将用户保存在车辆中,如果没有,则用户为null,并将车牌号保存在字符字段中。
https://stackoverflow.com/questions/54546199
复制相似问题