我在 mysql 資料庫中有一個 Buyer 表,我想從 User 模型(默認 django 模型)中獲取用戶名、電子郵件、密碼并將其存盤在 Buyer 表中,Buyer 模型在 models.py 中:
class Buyer(models.Model):
row_id = models.AutoField(primary_key=True)
user_name = models.CharField(unique=True, max_length=50)
user_password = models.CharField(max_length=16)
first_name = models.CharField(max_length=50)
middle_name = models.CharField(max_length=50, blank=True, null=True)
last_name = models.CharField(max_length=50)
email = models.CharField(unique=True, max_length=100)
home_phone = models.CharField(max_length=20, blank=True, null=True)
mobile_phone = models.CharField(unique=True, max_length=20)
personal_id = models.CharField(max_length=30, blank=True, null=True)
idtype_fk = models.ForeignKey('Idtype', models.DO_NOTHING, db_column='idType_FK', blank=True, null=True) # Field name made lowercase.
personal_id_country_fk = models.ForeignKey('Country', models.DO_NOTHING, db_column='personal_id_country_FK',related_name='personal_id_country_fk') # Field name made lowercase.
address_line_1 = models.CharField(db_column='address_Line_1', max_length=200) # Field name made lowercase.
address_line_2 = models.CharField(db_column='address_Line_2', max_length=200, blank=True, null=True) # Field name made lowercase.
p_o_box = models.CharField(max_length=20, blank=True, null=True)
city = models.CharField(max_length=50)
country_fk = models.ForeignKey('Country', models.DO_NOTHING, db_column='country_FK' , related_name='country_fk') # Field name made lowercase.
gender_fk = models.ForeignKey('Gender', models.DO_NOTHING, db_column='gender_FK') # Field name made lowercase.
bdate = models.DateField()
def __str__(self):
return 'User: ' self.user_name
class Meta:
managed = False
db_table = 'buyer'
注冊后用戶/買家可以在個人資料頁面添加更多資訊,如名字、手機等
uj5u.com熱心網友回復:
正如 Willem van Onsem 提到的,ForeignKey在您的Buyer模型中使用 a 來參考用戶物件:
class Buyer(models.Model):
#other stuff
user_fk = models.ForeignKey(User, on_delete=models.SET_NULL)
#other stuff
或者,如果每個購買者只是一個用戶,每個用戶只是一個購買者,請使用 aOneToOneField而不是 a ForeignKey。
如果您想訪問用戶名/電子郵件/密碼,您可以使用如下查詢:
buyer = Buyer.objects.all().first()
buyer_email = buyer.user_fk.email
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/451632.html
