首页 > 解决方案 > 在使用 django 模型添加外键时需要帮助

问题描述

好吧,所以我不知道如何构图。我有两个模型 Employee 和 Customer。我将 Employee 作为外键存储在 emp_id 下的 Customer 模型中。epm_id 存储承认客户的员工的主键。我不确定如何在 django 中执行此操作。这是我的模型:

class Customer(models.Model):
    firstname = models.CharField(max_length=15)
    lastname = models.CharField(max_length=15)
    age = models.IntegerField()
    sex = models.CharField(max_length=10)
    phoneno = models.IntegerField()
    emailid = models.CharField(max_length=25)
    address = models.CharField(max_length=50)
    children = models.IntegerField()
    adults = models.IntegerField()
    roomtype = models.CharField(max_length=10)
    aadharno = models.CharField(max_length=15)
    daysstayed = models.IntegerField()
    date_visited = models.DateTimeField(default=timezone.now)
    emp_id = models.ForeignKey(Employee,on_delete=models.SET_NULL,blank=True,null=True) 

class Employee(models.Model):
    firstname = models.CharField(max_length=15)
    lastname = models.CharField(max_length=15)
    age = models.IntegerField()
    sex = models.CharField(max_length=10)
    phoneno = models.IntegerField()
    emailid = models.CharField(max_length=25)
    address = models.CharField(max_length=50)
    salary = models.IntegerField()
    designation = models.CharField(max_length=10)
    password = models.CharField(max_length=10)
    aadharno = models.CharField(max_length=15)
    datejoined = models.DateField(default=timezone.now)

我需要一些帮助。

标签: pythonpython-3.xdjango

解决方案


我建议的最好方法是按如下方式创建模型:

模型.py

    from django.db import models
    from django.contrib.auth.models import User
    
    SEX = [
       ('male', 'Male'),
       ('female', 'Female'),
       ('not_to_say', 'Rather not to say')
    ]
    
    class BaseModel(models.Model):
        age = models.IntegerField()
        sex = models.CharField(max_length=20, choices=SEX)
        phone = models.CharField(max_length=10)
        address = models.CharField(max_length=50)
        aadhar_no = models.CharField(max_length=15)
    
    class Employee(BaseModel):
        user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='employee_user')
        salary = models.IntegerField()
        designation = models.CharField(max_length=10)
        
   class Customer(BaseModel):
        user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='customer_user')
        childrens = models.IntegerField()
        adults = models.IntegerField()
        room_type = models.CharField(max_length=10)
        days_stayed = models.IntegerField()
        date_visited = models.DateTimeField(default=timezone.now)
        employee = models.ForeignKey(Employee, on_delete=models.SET_NULL, relted_name='serving_employee')

您可以访问password, date_joined, first_name, last_name& emailof employeefrom Employee.user, and first_name, last_name& emailof customerfrom Customer.user

我希望这能解决你的问题。


推荐阅读