phpmyadmin Django -如何将两个不同的模型存储在同一个数据库表中

hvvq6cgz  于 2022-12-26  发布在  PHP
关注(0)|答案(1)|浏览(144)

我有两个模型国家和州。我使用的列如下:

from django.db import models
from datetime import datetime

# Create your models here.
def get_current_datetime_str():
    now = datetime.now()
    return now.strftime("%Y-%m-%d %H:%M:%S")

class customer_location(models.Model):
    parent_id=models.CharField(max_length=100)
    name=models.CharField(max_length=100)
    status=models.CharField(max_length=100, default='nil')
    added_by=models.CharField(max_length=100, default=1)
    updated_by=models.CharField(max_length=100, default=1)
    created_on=models.CharField(max_length=100)
    updated_on=models.CharField(max_length=100)
    class Meta:
        db_table="customer_location"

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        self.created_on = get_current_datetime_str()
        self.updated_on = get_current_datetime_str()
        super().save(*args, **kwargs)
        self.parent_id = 0
        super().save(*args, **kwargs)

现在,我想设置父ID为0,如果一个国家被输入。我想设置父ID为自动递增的国家ID,如果国家被输入。
我面临的主要问题是将它们都存储在一个表中。我该怎么做呢?
数据库架构示例:

7gyucuyw

7gyucuyw1#

您可以使用Meta类的proxy属性来执行此操作:

class CustomerLocation(models.Model):
    parent_id=models.AutoField()
    name=models.CharField(max_length=100)
    status=models.CharField(max_length=100, default='nil')
    added_by=models.CharField(max_length=100, default=1)
    updated_by=models.CharField(max_length=100, default=1)
    created_on=models.CharField(max_length=100)
    updated_on=models.CharField(max_length=100)

    class Meta:
        db_table="customer_location"

    def __str__(self):
        return self.name

class Country(CustomerLocation):
    class Meta:
        proxy = True

    def save(self, *args, **kwargs):
        self.created_on = get_current_datetime_str()
        self.updated_on = get_current_datetime_str()
        self.parent_id = 0
        super().save(*args, **kwargs)

class State(CustomerLocation):
    class Meta:
        proxy = True

    def save(self, *args, **kwargs):
        self.created_on = get_current_datetime_str()
        self.updated_on = get_current_datetime_str()
        super().save(*args, **kwargs)

相关问题