Search code examples
pythondjangodjango-modelsforeign-keysdjango-queryset

How to add faker data in django in place of foreign key field


All I need is that user field of Product com from the foreign key of User model How can I add daker data here it gives me this error.

 Product.objects.create(
            Product_name=fake.name(),
            Product_desc = fake.text(),
            Price=fake.random_int(3000, 10000),
            user=1
        )
class User(models.Model):
    name = models.CharField(max_length=30)
    email = models.CharField(max_length=300, null=True, blank=True)
    password = models.IntegerField()
    def __str__(self):
        return self.name

class Product(models.Model):
    Product_name = models.CharField(max_length=30)
    Product_desc = models.CharField(max_length=300, null=True, blank=True)
    Price = models.IntegerField()
    user=models.ForeignKey(User, on_delete=models.CASCADE,related_name='set_user')

    def __str__(self):
        return self.Product_name

Here is the error


Solution

  • The error makes complete sense, you can't assign user=1 directly while creating instance, it must be User model instance so:

    Product.objects.create(
                Product_name=fake.name(),
                Product_desc = fake.text(),
                Price=fake.random_int(3000, 10000),
                user=get_object_or_404(User, id=1)
            )