Django : Обновление ForeignKey автоматически с помощью кнопки 'add'

Используется Python 4.03.

У меня есть две модели, которые соединены, с Asset:

class Asset(models.Model):
Order_Number = models.ForeignKey(Order, on_delete=models.CASCADE, null=True, blank=True)
Asset_QR = models.CharField(max_length=100, default='')
.... more fields below

быть ребенком для Order:

class Order(models.Model):
Order_Number = models.CharField(max_length=100)
Customer = models.CharField(max_length=100, default='')
Customer_Address = models.CharField(max_length=100, default='')

Я пытаюсь создать простую кнопку "Добавить" рядом со списком активов, которые еще не прикреплены ни к одному заказу. Я создал представление:

def attachassets (request, id):
order = Order.objects.get(id=id) #This displays the Order I want to add my assets to
assets = Asset.objects.exclude(Order_Number__isnull=False) #This filters to display only Assets that have no Order assigned

На моей HTML странице я отображаю информацию о заказе, а под ней простую таблицу, которая итерирует активы и имеет кнопку "ADD" рядом с ними:

<table class="table table-hover">
                <thead class="thead-dark">
                  <tr>
                    <th scope="col">Attach</th>
                    <th scope="col">Asset</th>
                  </tr>
                </thead>
                <tbody>
            {%for asset in assets %}
                    <tr>
                        <td>
                            <form action="" method=POST>
                                {% csrf_token %}
                                <button type="submit" class = "btn btn-dark", name="add" value={{order.id}}>Add</button>
                            
                        </td>
                        <td><a class="btn btn-outline-secondary" name="assetid" value={{asset.id}} href='/asset/{{asset.id}}'>{{asset.Asset_QR}} {{asset.Make}} {{asset.Model}} {{asset.Serial_Number}}</a></td>
                      </tr>
                    </form>
            {% endfor %}
                    </tbody>
                </table>

Затем в моих Представлениях я попробовал следующее:

if request.method == 'POST':
    x = request.POST.get("add")
    y = request.POST.get("assetid")
    Asset.objects.filter(id = y).update(Order_Number_id = str(x))
    return render (request, 'main/attachassets.html', context)

К сожалению, ничего не происходит.

Если я не использую Asset.objects.filter, он действительно работает, но просто обновляет ВСЕ существующие активы с Order.id, который в настоящее время передается через "add".

Я также попробовал Asset.objects.filter(id = int(y)), чтобы превратить assetid в целое число (подумал, что это может не сработать, так как по умолчанию он видит его как строку. Но это дает мне следующую ошибку:

int() аргумент должен быть строкой, байтоподобным объектом или действительным числом, а не 'NoneType'

.

Есть идеи, как заставить это работать?

Вернуться на верх