我正在尝试查询我在 django 中的 Preferences 表,但每当我尝试查找用户条目时,它只会给我这个错误。
ValueError: invalid literal for int() with base 10: 'jason'
我正在做的查找是这样的。
Preferences.objects.filter(customer='jason')
虽然很奇怪,但我可以做到这一点。
Preferences.objects.all()
然后我检索了我想要的一个对象的查询集。 当我问
Preferences.objects.all()[0].customer
在这里我确实检索了字符串“Jason”。你能解释一下我的查询或代码中出了什么问题吗?任何帮助将不胜感激,如果需要,我可以提供代码的其他部分!
#models.py
class Preferences(models.Model):
customer = models.OneToOneField(User, on_delete=models.CASCADE)
ebay_token = models.TextField(max_length=1024)
app_id = models.CharField(max_length=128, default='asdf', editable=False)
dev_id = models.CharField(max_length=128, default='1234', editable=False)
cert_id = models.CharField(max_length=128, default='1234', editable=False)
#this might need to be correct. I'm not sure if the user should have this much control over markup
markup = models.FloatField(max_length=3, validators=[MaxValueValidator(50, message='Can\'t be this high!'), MinValueValidator(1, message='Can\'t be this low!')])
seller_location = models.CharField(max_length=256)
#the ebay site number might need editing
ebay_site_number = models.IntegerField()
quantity = models.IntegerField(validators=[MinValueValidator(1, message='Must be atleast 1'), MaxValueValidator(10, message='Must be equal to or smaller than 10')])
#this will def need fixing here
fullfillment_policy = models.CharField(max_length=64)
payment_policy = models.CharField(max_length=64)
return_policy = models.CharField(max_length=64)
#default weight
default_weight = models.IntegerField(help_text='Default weight for item in pounds', default=15, validators=[MinValueValidator(1, message='Must be atleast 1 pound'), MaxValueValidator(500, message='Must be equal to or less than 500')])
paypalEmailAddress = models.CharField(max_length=128, default='user@gmail.com')
def __str__(self):
return "{} | Preferences".format(self.customer.username)
请您参考如下方法:
models.OneToOneField 需要一个用于 pk 的 id 或一个 User 对象。
尝试
Preferences.objects.filter(customer__name='Jason')
或将 __name 部分更改为您的 User 模型中的任何字段。
