Как вставить данные для атрибута внешнего ключа из представлений Django? - PullRequest
0 голосов
/ 25 мая 2019

Это моя модель с двумя атрибутами внешнего ключа:


class Count(models.Model):
    userId = models.ForeignKey(User, on_delete=models.CASCADE)
    channelId = models.ForeignKey(News_Channel, on_delete=models.CASCADE)
    rate = models.PositiveIntegerField(default=0)

    def __str__(self):
        return self.channelId.name

    class Meta:
        ordering = ["-id"]

Я хочу вставить некоторые данные, когда пользователь входит в систему, поэтому я пишу следующий код в моем файле views.py

    for i in range(1,10):
        obj = Count.objects.filter(userId=request.user.id, channelId=cid)
        if not obj:
            o = Count.objects.create(id=Count.objects.all().count() + 1,userId=request.user.id, channelId=i,rate=0)
            o.save()
        i += 1

У меня есть идентификатор канала от 1 до 10 в моей базе данных, но я получаю следующую ошибку:

ValueError: Cannot assign "1": "Count.channelId" must be a "News_Channel" instance.

Пожалуйста, помогите вставить данные.

1 Ответ

1 голос
/ 25 мая 2019

Вы пытаетесь вставить целое число для ForeignKey, и вам нужен объект

for i in range(1,10):
        obj = Count.objects.filter(userId=request.user.id, channelId=cid)
        if not obj:
            news_obj = News_Channel.objects.get(id=i)
            o = Count.objects.create(id=Count.objects.all().count() + 1,userId=request.user.id, channelId=news_obj,rate=0)
            o.save()
        i += 1
...