Я хочу установить для пользователя фоновое изображение профиля. Но вместо того, чтобы позволить ему разместить какое-либо изображение, я дам ему несколько картинок на выбор. Поэтому сначала я сохранял URL-адреса изображений в коде Django и вставлял их прямо в базу данных. Но я думаю, что более практично хранить в базе данных все URL-адреса изображений, которые я хочу, с их именем, а затем возвращать в базу данных имя изображения.

Так что я:

class BackgroundImage(models.Model):
    url = models.PositiveSmallIntegerField()
    name = models.CharField(max_length=25)

class User(models.Model):
    ...
    bgpic = <here it goes the code>

Как я могу сослаться на запись этой модели в базе данных в моем профиле URL-адреса пользователя?

0
wonderwhy 16 Авг 2014 в 23:18

1 ответ

Лучший ответ

Я думаю, вы хотите добавить внешний ключ ссылка в таблице User на таблицу BackgroundImage

class BackgroundImage(models.Model):
    url = models.PositiveSmallIntegerField()
    name = models.CharField(max_length=25)

class User(models.Model):
    ...
    bgpic = models.ForeignKey(BackgroundImage)

Затем вы сможете установить ссылки и получить доступ к значениям строки, прикрепленной через внешний ключ:

user = User.objects.get(id=1)

# set the fk reference
user.bgpic = BackgroundImage.objects.get(id=2)
user.save()

# access the reference  
print user.bgpic.url
print user.bgpic.name
2
quaspas 16 Авг 2014 в 23:59
Спасибо! Идеально. Вы очень помогли мне понять это.
 – 
wonderwhy
17 Авг 2014 в 21:30