2013-06-22 18 views
1

我有关系,在Django尝试无效关键字参数多对多。文件是此功能

模式

class File(models.Model): 
    name = models.CharField(max_length=255) 
    src = models.FileField(upload_to="files" 

class UserBuyFile(models.Model): 
    user = models.ForeignKey(User) 
    files = models.ManyToManyField(File) 

views.py

def buy_file(request,id): 
    f = File.objects.get(id=id) 
    user_buy_file = UserBuyFile.objects.create(files=f,user=request.user) 

我有这样的错误:

'files' is an invalid keyword argument for this function

回答

0

试试这个:

def buy_file(request,id): 
    f = File.objects.get(id=id) 
    user_buy_file, dummy_created = UserBuyFile.objects.get_or_create(user=request.user) 
    user_buy_file.files.add(f) 

我还建议你在模型UserBuyFile设置unique=True田间user

class UserBuyFile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    files = models.ManyToManyField(File) 
1

这不是如何填充ManyToManyField。首先创建并保存模型,然后在该字段上使用manager