这是我的models.py:
class Image(models.Model):
user = models.ForeignKey(User)
caption = models.CharField(max_length=300)
image = models.ImageField(upload_to=get_upload_file_name)
pub_date = models.DateTimeField(default=datetime.now)
class Meta:
ordering = ['-pub_date']
verbose_name_plural = ('Images')
def __unicode__(self):
return "%s - %s" % (self.caption, self.user.username)
class ProfilePic(Image):
pass
class BackgroundPic(Image):
pass
class Album(models.Model):
name = models.CharField(max_length=150)
def __unicode__(self):
return self.name
class Photo(Image):
album = models.ForeignKey(Album, default=3)
这是另一个:
class UserProfile(models.Model):
user = models.OneToOneField(User)
permanent_address = models.TextField()
temporary_address = models.TextField()
profile_pic = models.ForeignKey(ProfilePic)
background_pic = models.ForeignKey(BackgroundPic)
def __unicode__(self):
return self.user.username
我可以使用其 User 对象访问 Parent 类。
>>>m = User.objects.get(username='mika')
>>>m.image_set.all()
>>>[<Image: mika_photo - mika>, <Image: mika_pro - mika>, <Image: mika_bf - mika>]
但我无法通过用户访问它的子类。我试过了:
>>>m.Image.profilepic_set.all()
和
>>>m.image_set.profilpic.all()
和这个
编辑
>>>m.profilepic_set.all()
AttributeError:'User' object has no attribute 'profilepic_set'
但都给了我错误!
编辑
如何访问子类,以便将图像从一个类添加到另一个类。
例如:将图片从 Photo 复制到 ProfilePic,或从 ProfilePic 复制到 BackgroundPic 等等。或者简单地说,如何为特定类中的特定用户添加图像?
编辑
我想要的是,每个用户都将拥有profile pictures
一background images
组photos uploaded
. 这些图像将单独保存在模板中。如果用户需要,他可以轻松地使用(复制)上传的另一组照片或背景图像集中的图像,作为个人资料图片,并将该图像添加到profile picture set
. 或者,如果他愿意,他可以使用来自其他类的图像profile picture set
或来自其他类uploaded photos
的background image
图像,类似地,从其他类使用的图像将被复制到background image set
.
请指导我实现上述目标。将不胜感激。谢谢你。