2016-04-29 4 views
0

У меня есть две модели, связанные через поле «Множество ко многим».Django многие из многих не работают в unittest, но работают в admin

class Tires(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    brand = models.CharField(max_length=50) 

class Car(models.Model): 
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) 
    brand = models.CharField(max_length=50) 
    tires = models.ManyToManyField('Tires', blank=True) 

Он отлично работает, когда я добавляю шины к автомобилю через страницу администратора, но он не работает в моей UnitTests, и я не могу понять, что эта проблема (возможно, что-то очень простое)

Это мой UnitTest:

def test_many_to_many(self): 
    tires_1 = Tires(brand='bridgestone') 
    tires_1.save() 
    car_1 = Car(brand='BMW') 
    car_1.save() 
    car_1.tires.add(tires_1) 
    car_1.save() 

Это не вызывает каких-либо исключений, но когда я печатаю car_1.tires, он говорит carthings.Tires.None Я пробовал наоборот, добавляя car_1 до шин_1. car_set, но это дает тот же результат. Я также попытался добавить объект другого класса в поле «многие ко многим», чтобы увидеть, что произойдет, что вызывает ошибку. Таким образом, похоже, что добавление работает, но оно просто не спасает или что-то еще?

+0

Положить Bridgestone между апострофами. – rfkortekaas

+0

@rfkortekaas Я отредактирую это, это не проблема, но я немного модифицировал мою модель, чтобы показать ее здесь –

ответ

3

Вы, вероятно, делают это:

>> print car_1.tires 
carthings.tires.None 

который является представление «менеджер объектов, связанных с». Вы, вероятно, хотите сделать что-то вроде:

>> print car_1.tires.all() 
[<Tire 1>] 

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

Кстати, вам не нужно save модель после добавления чего-то к отношениям шин, так как вам не нужно обновлять таблицу Cars.

 Смежные вопросы

  • Нет связанных вопросов^_^