我的项目中有3个表,第一个是默认用户表os django,用户名密码,名字和姓氏filds 第二个是用户档案,第三个是股票。
用户表用于保存卖家和买家的数据。
class Stocks(models.Model):
user=models.ForeignKey(User, null=True)
name=models.CharField(max_length=128,verbose_name=_('stockname'))
number=models.CharField(blank=True,null=True,max_length=64,verbose_name=_('number'))
brand=models.CharField(max_length=64, validators=[
RegexValidator(regex='^[A-Z]*$',message=_(u'brand must be in Capital letter'),)]
,verbose_name=_('brand'))
comment=models.CharField(blank=True,null=True,max_length=264,verbose_name=_('comment'))
price=models.PositiveIntegerField(blank=True,null=True,verbose_name=_('price'))
date=models.DateTimeField(auto_now_add = True,verbose_name=_('date'))
checking= ((_('pending'),_('pending')),
(_('reject'),_('reject')),
(_('approved'),_('approved')),
(_('expired'),_('expired')),
)
confirm=models.CharField(choices=checking,max_length=12,verbose_name=_('confirmation'), default=_('pending'))
def __str__(self):
return str(self.name)
class Meta:
verbose_name=_('Stock')
verbose_name_plural=_('Stocks')
def get_absolute_url(self):
return reverse('BallbearingSite:mystocks' )
class UserProfileInfo(models.Model):
user=models.OneToOneField(User,related_name='profile')
phone_regex = RegexValidator(regex=r'^\d{11,11}$', message=_(u"Phone number must be 11 digit."))
cellphone = models.CharField(validators=[phone_regex], max_length=17,verbose_name=_('cellphone'))
tel = models.CharField(validators=[phone_regex], max_length=17,verbose_name=_('tel'))
state=models.CharField(validators=[farsi_regex],max_length=128,verbose_name=_('state'))
city=models.CharField(validators=[farsi_regex],max_length=128,verbose_name=_('city'))
address=models.CharField(validators=[farsi_regex],max_length=264,verbose_name=_('address'))
def __str__ (self):
return self.user.username
class Meta:
verbose_name=_('UserProfileInfo')
verbose_name_plural=_('UserProfileInfos')
买方可以选择卖家发送的库存。 所以在我的第四个表中,我应该有卖家ID,买家ID和库存ID,它引用用户表和库存表。 我想知道应该将哪个字段定义为onetoone,哪个字段作为外键?如何定义它引用用户的id和表中股票的id?
我写了这个模型:
class SellerDesktop(models.Model)
seller=models.OneToOneField(User, related_name='seller')
buyer=models.OneToOneField(User, related_name='buyer')
stock=models.ForeignKey(Stocks)
def __str__(self):
return str(self.seller) + '-' + str(self.buyer)
class Meta:
verbose_name=_('SellerDesktop')
verbose_name_plural=_('SellerDesktop')
但是在管理面板中我只能通过他们的名字选择股票,但我想选择每个股票的唯一ID,因为eache名称有不同的品牌,每个品牌有不同的编号,我不能只选择名称
答案 0 :(得分:0)
在您的库存模型中,您可以使用名称向输出添加ID。像这样的东西然后你可以通过id和名字选择股票。
def __str__(self):
return str(self.id + ' - ' + self.name)