我在Django中有一个模型:
class Task(models.Model):
product = models.ForeignKey(Product)
content = models.OneToOneField(ContentDataSet)
如果我只想显示尚未分配的limit_choices_to=
选项并且已经分配给用户/管理员中的此任务选项,那么我如何为content
字段使用选项ContentDataSet
- 下来的选择?
我尝试使用limit_choices_to = {'task__isnull':True}
,但在这种情况下,我看不到已分配给此任务content
选项。
limit_choices_to = models.Q(task__isnull=True) | models.Q(task=self)
无效,因为self
未定义
答案 0 :(得分:0)
Limit_choices_to是一个Q对象。 在文档中,您有一个对ForeignKey进行类似限制的示例:https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to
有关查询的更多信息,请访问:https://docs.djangoproject.com/en/dev/topics/db/queries/
答案 1 :(得分:0)
使用limit_choices_to无法完成。 但是您可以使用两种可以正常工作的方法:
1)对于外键,您可以使用formfield_for_foreignkey覆盖ModelAdmin中的查询集,如下所示:
filePath.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
final String downloadUrl = uri.toString();
UserProfileRef.child("profile").child("imageURL").setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
loadingBar.dismiss();
if(task.isSuccessful()) {
Intent selfIntent = new Intent(ProfileActivity.this, ProfileActivity.class);
startActivity(selfIntent);
Toast.makeText(ProfileActivity.this, "Profile image stored to firebase database successfully.", Toast.LENGTH_SHORT).show();
}
else {
String message = task.getException().getMessage();
Toast.makeText(ProfileActivity.this, "Error Occured..." + message, Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
});
2)作为第二选择,下面是一个示例,该示例覆盖了字段查询集,可以帮助您使用OneToOne字段: Django ForeignKey limit_choices_to a different ForeignKey id
祝你好运!