好吧,我正在尝试跟踪与 Django Rest Framework 的关系。
这是一个简化的模型:
class Model1(models.Model):
name = models.CharField(max_length=20)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
class Model2(models.Model):
title = models.CharField(max_length=12, null=True, blank=True)
model1 = models.ForeignKey(Model1, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
和序列化器:
class Model1Serializer(serializers.ModelSerializer):
class Meta:
model = Model1
fields = '__all__'
class Model2Serializer(serializers.ModelSerializer):
class Meta:
model = Model2
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
从 Model2 中,我想访问所有者属性,例如电子邮件......
如果没有 DRF 并且在标准模板中,我会这样做:
{{ instanceOfModel2.model1.owner.email }}
Run Code Online (Sandbox Code Playgroud)
这将遵循关系。
您知道如何使用 Django DRF 实现这一目标吗?
我查看了https://www.django-rest-framework.org/api-guide/relations/ 但我想要的是相反的方式......而且我不想通过 REST API 公开 Django 用户模型....
我是Core Data的新手,看了很多教程和论坛,但没有找到解决我问题的优雅方案:
我的模型中有三个实体:Worker,Task和SubTask.每个都与它下面的实体有一对多关系,并且与一对一有关.Worker有很多任务,每个Task都有很多SubTasks,每个SubTask都有一个parentTask,每个Task都有一个Worker.SubTask有一个startTime属性,它被设置为newObject方法中的当前时间,以及一个触发我的SubTaskArrayController类中的endSubTask方法的按钮.endSubTask计算startTime和now之间的时间,并为SubTask属性timeWorked设置该值.到现在为止还挺好.问题:
获取所选Task的totalTimeWorked属性以更新自身的最佳方法是什么?
当我尝试类似的东西
[currentSubTask setValue:newTotalTime forKey:@"parentTask.totalTimeWorked"];
我明白了:
[setValue:forUndefinedKey:]:实体SubTask不是密钥parentTask.totalTimeWorked的密码值编码兼容.
如何访问当前所选SubTask的parentTask的属性?
这是我的问题:我的数据库中有3个表
电影(电影列表)
类型(所有类型的表格)
RelatedGenres(那些与特定电影相似并且指向特定类型的类型,因为电影可以有超过1种类型)
关系如下:
Movies.ID - > RelatedGenres.MovieID - > Genres.ID
我有一个模型与assosiations(导航属性). 我得到了什么:
class Movie
{
public int ID { get; set; }
public string OriginalTitle { get; set; }
public ObjectCollection<RelatedGenre> RelatedGenres { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
哪里
class RelatedGenre
{
public int ID { get; set; }
public int MovieID { get; set; }
public ObjectCollection<Genre> Genres { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要的是:
class Movie
{
public int ID …Run Code Online (Sandbox Code Playgroud) 我有以下内容NSManagedObjects:
Product <<->> ProductAttribute <->> ProductAttributeOption
Run Code Online (Sandbox Code Playgroud)
使用NSPredicate ProductAttributeOption根据产品获取s 的正确方法是什么?
我没试过就试过以下内容:
[NSPredicate predicateWithFormat:@"ANY SELF.productAttribute.products MATCHES %@", product]
[NSPredicate predicateWithFormat:@"ANY SELF.productAttribute@distinctUnionOfSets.products MATCHES %@"", product]
[NSPredicate predicateWithFormat:@"ANY SELF.productAttribute.@distinctUnionOfSets.giftProducts LIKE[cd] %@", self.giftProduct]
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢!
core-data relationship nspredicate nsfetchedresultscontroller nsmanagedobject
对于密码 -
match (m)-[r]-(n) where m.name = 'XYZ' return n.name, type(r), m.name
n.name type(r) m.name
XYZ belongs_to Ordering Status
XYZ runs_on_queue inbound
XYZ runs_on_db DBxc
Run Code Online (Sandbox Code Playgroud)
在这种情况下,订购状态是"拥有"XYZ的业务服务,关系定义如下:
CREATE (XYZ)-[:belongs_to]->(Order)
Run Code Online (Sandbox Code Playgroud)
类型(r)仅给出关系,但不给出关系的方向.这仍然是获得方向的最佳方式 - 我还注意到有关Cypher不可用的评论
谢谢.
我有两个表A和B,关系"A有很多B".A可能没有任何B记录.
我需要编写一个查询,它只会选择那些在B中有相关记录的A记录.应忽略没有相关B记录的记录.使用Yii2活动记录我也试图加载所有A记录与急切加载相关的B记录.所以这就是我所拥有的:
Movies::find()->with('shows')->all();
Run Code Online (Sandbox Code Playgroud)
如何添加必要条件以过滤掉没有节目的电影?如何在依赖于节目数据的电影上添加任何条件?
我试图通过使用"使用"给了别名,模型类的名称使用在laravel雄辩的方法相关模型的类名.例如,我使用过UserProfile模型类:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Models\UserProfile;
Run Code Online (Sandbox Code Playgroud)
而现在我正在以雄辩的方式使用它,如下所示:
public function profileDetails() {
return $this->hasOne('UserProfile', 'user_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)
但这会引发一个错误.Class 'UserProfile' not found
如果我直接在这个雄辩的第一个参数中传递相关模型的名称和路径,那么它的工作正常
public function profileDetails() {
return $this->hasOne('App\Models\UserProfile', 'user_id', 'id');
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么它没有合作 use
我有两张相关的桌子.
| id | reon_id | 名字|
| id | settlement_id | first_name | last_name | cipher_id |
在结算模型中他们的相关如下:
public function members()
{
return $this->hasMany('App\AddMember');
}
Run Code Online (Sandbox Code Playgroud)
所以,首先我需要reon_id为1的所有成员,所以我喜欢这样:
$members = Settlement::where('reon_id', '1')
->with('members')
->count();
Run Code Online (Sandbox Code Playgroud)
这很有效.但是现在,我需要同样的东西,但也需要cipher_id为1.如果我在 - > with('members')之后添加 - > where('cipher_id','1')我得到这个错误:
(2/2)QueryException SQLSTATE [42S22]:找不到列:1054'where子句'中的未知列'cipher_id'
哪里错了?
如何在laravel雄辩的对象中选择字段
User::select('username', 'firstname', 'lastname')->with(['periods' => function($){
$->select('jobtitle')->orderBy('start_date', 'desc')->limit(1);
}])->paginate(50);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可能得到句点为空
我遵循数据结构,
产品
产品审核
关系是一对多,即一个产品有很多评论.
我想要的是加载所有经过验证评论的产品(即状态为真的评论)
我试过跟着,
$products = Product::with('reviews')->get();
Run Code Online (Sandbox Code Playgroud)
但是当我迭代$products访问$ product-> reviews等评论时,会显示所有评论(甚至是状态错误评论).
任何建议都表示赞赏.