我到处寻找,甚至在两者之间,由于某种原因,我找不到一个明确的答案
我正在使用django1.9
并创建了此模型:
class paymentInfo(models.Model):
"""
Model for storing payment info
- Username as ForeignKey from userToCard
- Store payment token
- Store last 4
- Store card/bank name
- Store bool value for Default method
"""
username = models.ForeignKey(User, db_column='username', on_delete=models.CASCADE)
token = models.CharField(max_length=10)
last_4 = models.IntegerField()
bank_name = models.CharField(max_length=50)
default = models.BooleanField(default=0)
class Meta: # meta class to define the table name
db_table = 'payment_methods'
verbose_name_plural = 'Payment Methods' # for the admin site display
ordering = ('username',)
def __str__(self):
# in __str__ you should return a value of type string
# so self.username changed to self.username.username
return self.username.username # value displayed in admin view
我已经使用一些不同的用户名创建了一些对象,并希望按用户筛选paymentInfo对象
当我存储对象时,数据库将user pk
存储在username
列下,而不是实际的用户名字符串。我不知道为什么,但这不是我的问题
我的问题是当我试图使用username
或user pk
筛选出paymentInfo.objects
时。我似乎无法过滤掉它,因此我通常得到的错误是:FieldError: Cannot resolve keyword 'username' into field. Choices are: bank_name, default, id, last_4, token
另外,我正在使用MySQL
如果我没弄错的话,您正在尝试按用户名从表用户中筛选数据—什么是外键。在这种情况下,这应该会有所帮助
paymentInfo.objects.filter(username__name='John')
多亏了提供的答案,我才能够找到一个解决方案(主要使用@Aamir Adnan的方法)
我的类中新的
__unicode__
被删除,因此我不再收到此错误:相关问题 更多 >
编程相关推荐