如何设置Django模型的一个字段的值等于其他Django模型的其他字段

Var*_*dha 2 django django-models django-forms django-admin

嗨我正在设置我的Django模型的一个字段的值等于其他模型的其他字段的值.此值应动态更改.

这是我的第一个模特

class MainModel(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(
            verbose_name='Email Address',
            max_length=255,
            unique=True)
    payment_online = models.ForeignKey(OnlinePayments, null=True, blank=True)
    register_date = models.DateTimeField(default=datetime.now, blank=True)
    purchase_date = models.CharField(max_length=32, default='')
    is_csr = models.BooleanField(default=False)
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

这是第二个模型

class OnlinePayments(models.Model):

    payer_email = models.CharField(max_length=255, default=None, null=True)
    payer_name = models.CharField(max_length=255, default=None, null=True)
    timestamp = models.DateTimeField(auto_now_add=True, blank=True)

    def __str__(self):
        return self.payer_email
Run Code Online (Sandbox Code Playgroud)

我想在MainModel中将purchase_date的值设置为等于OnlinePayments中的时间戳值.

任何帮助都会得到帮助

ale*_*cxe 6

您实际上不需要维护具有相同值的两个字段.

我将定义一个方法MainModeltimestamp从相关模型中获取:

class MainModel(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(
            verbose_name='Email Address',
            max_length=255,
            unique=True)
    payment_online = models.ForeignKey(OnlinePayments, null=True, blank=True)
    ...

    def get_purchase_date(self):
        return self.payment_online.timestamp if self.payment_online else None
Run Code Online (Sandbox Code Playgroud)