测试模型 - 如何创建记录

时间:2016-04-19 09:18:24

标签: django django-models django-testing

根据https://docs.djangoproject.com/en/1.9/topics/testing/overview/

from django.test import TestCase
from myapp.models import Animal

class AnimalTestCase(TestCase):
    def setUp(self):
        Animal.objects.create(name="lion", sound="roar")
        Animal.objects.create(name="cat", sound="meow")

    def test_animals_can_speak(self):
        """Animals that can speak are correctly identified"""
        lion = Animal.objects.get(name="lion")
        cat = Animal.objects.get(name="cat")
        self.assertEqual(lion.speak(), 'The lion says "roar"')
        self.assertEqual(cat.speak(), 'The cat says "meow"')

我想创建setUp到我的模型类:

class Post(models.Model):
    author = models.ForeignKey('auth.User')
    tags = models.ManyToManyField('blogUserPlane.Tag')
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
        default=timezone.now)
published_date = models.DateTimeField(
    blank=True, null=True)

这是我的工作设置:

def setUp(self):
    Post.objects.all().create(author=User(), tag=models.ManyToManyField('blogUserPlane.Tag'), title="title1", text="text1", created_date=None, published_date=None)

使用ManyToManyField和ForeginKey创建模型记录的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

如果要在ForeignKey或ManyToMany字段中输入值,首先需要导入该值。 例如,如果要在作者字段中输入值,

from django.contrib.auth.models import User
user = User.objects.get(username = 'your_username')
Post.objects.create(author = user)

答案 1 :(得分:0)

保存M2M

在链接表中保存一些值

`tag = blogUserPlane.Tag()

...

tag.save()`

保存外键

from django.contrib.auth.models import User post = Post() post.author = User ... post.tags.add(tag) post.save()