美好的一天,我得到了以下模型,但我相信有一种更好的方法来实现自己的目标。我担心要扩展GeneralUser,但我并不是一个好主意。像现在正在扩展GeneralUser一样好,还是在我要引用它的所有模型中为GeneralUser创建一个外键会更好?
class GeneralUser(models.Model):
user = models.ForeignKey(User, unique=True)
profile_picture = models.ImageField()
gender = models.CharField(max_length=1, choices=choices)
country = models.CharField(max_length=50)
province = models.CharField(max_length=50)
city = models.CharField(max_length=50)
street = models.CharField(max_length=50)
contact_number = models.CharField(max_length=50)
post_code = models.IntegerField(max_length=5)
date_of_birth = models.DateField()
class Administrator(GeneralUser):
admin_id = models.CharField(max_length=50)
class Patient(GeneralUser):
patient_id = models.CharField(max_length=10)
class Doctor(GeneralUser):
doctor_id = models.CharField(max_length=10)
class Department(models.Model):
doctor_id = models.ForeignKey(Doctor, related_name='doctor')
class Bill(models.Model):
patient_id = models.ForeignKey(Patient, related_name='patient')
class Appointment(models.Model):
patient_id = models.ForeignKey(Patient, related_name='patient')
doctor_id = models.ForeignKey(Doctor, related_name='doctor')
class PatientRecord(models.Model):
pass
class Contact(models.Model):
full_name = models.CharField(max_length=80)
email = models.EmailField(help_text='[email protected]')
contact_number = models.CharField(max_length=14, help_text='+27 074 859 81 93')
message = models.TextField(help_text='Please, type in your message')
对如何更好地设计表和关系有任何帮助或想法吗?
我觉得很适合!(OneToOneField类似于具有unique = True的ForeignKey)
class UserProfile(models.Model):
user = models.OneToOneField(User)
force_password_change = models.BooleanField(default=False,editable=False)
class Distributor(UserProfile):
company = models.CharField(max_length=50)
street = models.CharField(max_length=60, blank=True, null=True)
city = models.CharField(max_length=60, blank=True, null=True)
zipcode = models.IntegerField(max_length=10, blank=True, null=True)
country = models.CharField(max_length=60, blank=True, null=True)
telephone = models.CharField(max_length=15, blank=True, null=True)
url = models.CharField(max_length=50, blank=True, null=True)
def __unicode__(self):
return '%s <%s>' % (self.user.username, self.company)
class Customer(UserProfile):
company = models.CharField(max_length=50)
street = models.CharField(max_length=60, blank=True, null=True)
city = models.CharField(max_length=60, blank=True, null=True)
zipcode = models.IntegerField(max_length=10, blank=True, null=True)
country = models.CharField(max_length=60, blank=True, null=True)
telephone = models.CharField(max_length=15, blank=True, null=True)
url = models.CharField(max_length=50, blank=True, null=True)
limit = models.IntegerField(default = 0, blank=True, null=True , editable=False)
distributor = models.ForeignKey(Distributor,blank=True,null=True)
def __unicode__(self):
return ("%s <%s>" % (self.user.username, self.company))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句