Обновление поля foreignkey в Django

имеют следующие модели

Class FootballWebsite(models.Model):
    """Football service website."""
    url = models.URLField(validators=[validate_club_url], unique=True)
    #Football service
    id = models.CharField(primary_key=True, unique=True)
    sub_categories = models.ForeignKey(SubCategory, default=1)
    
    
class SubCategory(models.Model):
    """Sub Category"""
    category = models.ForeignKey(Category)
    name = models.CharField(max_length=50)
    slug = models.SlugField()

и пытаемся выполнить следующее

class Command(BaseCommand):

    def handle(self, *args, **options):
        websites = FootballWebsiteDescription.objects.filter(title__in=['title1',' title2'])
        for website in websites:

              try:
                  fc = FootballWebsite.objects.filter(id=website.about_id)
                  fc.sub_categories_id = 88
                  fc.save()

, а также следующий вариант

fc = FootballWebsite.objects.filter(id=website.about_id).update(sub_categories_id=88)

Насколько я понимаю, оба способа обновления id подкатегории с 1 по умолчанию до 88 должны работать. Я могу обновить другие поля таким образом, по крайней мере, и вижу это как пример, на который можно сослаться где угодно.

я могу найти только эту ссылку Django: Set foreign key using integer? что указывает на то, что я мог столкнуться с ошибкой в моем очень старом проекте Django 1.7.

Я упускаю что-то очень очевидное или есть обходной путь? Очень признателен.

Согласно этому вы не можете обновить внешний ключ с id

Django update on queryset to change ID of ForeignKey

Вы должны сначала запросить экземпляр. Кроме того, у вас уже есть экземпляры сайта, поэтому вам не нужен дополнительный запрос

    for website in websites:
        sub_category_instance = SubCategory.objects.get(id=some_id)
        website.update(sub_categories=sub_category_instance
        website.save()
Вернуться на верх