Django模型外键还是onetoone?

问题描述 投票:0回答:1

我的项目中有3个表,第一个是默认用户表os django,用户名密码,名字和姓氏filds,第二个是userprofile,第三个是stock。

用户表用于保存卖家和买家的数据。

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名称有不同的品牌,每个品牌有不同的编号,我不能只选择名称

django model
1个回答
0
投票

在您的库存模型中,您可以使用名称添加id到输出。像这样的东西然后你可以通过id和名字选择股票。

 def __str__(self):
      return str(self.id + ' - ' + self.name)
© www.soinside.com 2019 - 2024. All rights reserved.