python - 如何从该模型中获取对象?
问题描述
我正在尝试创建一个有效的地址模型/视图/...,并且模型可以正常工作,但是我正在尝试访问它包含的数据并且它不工作。这是模型:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
nick_name = models.CharField('Nick name', max_length=30, blank=True, default='')
bio = models.TextField(max_length=500, blank=True)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
# Address = models.ForeignKey('Address', on_delete=models.CASCADE)
# If we don't have this, it's going to say profile object only
def __str__(self):
return self.user.username
#return f'{self.user.username}' # it's going to print username Profile
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.image.path)
class Address(models.Model):
users = models.ManyToManyField(Profile, blank=True)
name = models.CharField(max_length=30)
address = models.CharField(max_length=50)
city = models.CharField(max_length=60, default="Miami")
state = models.CharField(max_length=30, default="Florida")
zipcode = models.CharField(max_length=5, default="33165")
country = models.CharField(max_length=50)
class Meta:
verbose_name_plural = 'Address'
def __str__(self):
return self.name
我正在尝试访问用户可以拥有的所有地址。我试过:
# TESTS
allAddresses = Address.objects.all()
print(allAddresses)
对于地址对象,它给了我:<QuerySet [<Address: Elizabeth>, <Address: Work>]>
但是,如果我尝试按用户过滤它,如下所示:
allAddresses = Address.objects.all().filter(users='arturo')
print(allAddresses)
它给了我一个错误:invalid literal for int() with base 10: 'arturo'
有人可以带我去获取登录用户的所有地址吗?
非常感谢你!
解决方案
过滤器约束users
是指中间多对多表的ID,因此是错误的。您应该完整地指定相关字段,其中user
指的是Profile.user
字段,并且username
指的是该User.username
字段:
allAddresses = Address.objects.all().filter(users__user__username='arturo')
推荐阅读
- php - Laravel 框架中 webpack.mix.js 的职责是什么
- ios - 如何使 UILabel 与数据模型保持同步
- appium - Browserstack App Automate 需要很长时间才能启动
- python - 如何在 Python 中访问由标签构成的数据?
- liferay-7 - Liferay 7 MVC 组件
- java - 将 Spring boot 1.5 迁移到 2.x 无法启动应用程序
- css - Mapbox GL JS - 样式按钮
- .htaccess - Htaccess 重定向异常
- python - 使用matplotlib的c++实时动画
- sql-server-2016 - SQL2016中如何防止数据屏蔽