如何在Django应用程序中获取所有表名?
我使用以下代码,但它没有得到ManyToManyField创建的表
from django.db.models import get_app, get_models
app = get_app(app_name)
for model in get_models(app):
print model._meta.db_table
Run Code Online (Sandbox Code Playgroud) 我已经建立了一个简单的多对多关系帐户:Hibernate的角色,但是当我尝试在单元测试中保存帐户后添加了其角色,我得到一个UnsupportedOperationException:
java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:144)
at java.util.AbstractList$Itr.remove(AbstractList.java:360)
at java.util.AbstractList.removeRange(AbstractList.java:559)
at java.util.AbstractList.clear(AbstractList.java:217)
at org.hibernate.type.CollectionType.replaceElements(CollectionType.java:502)
at org.hibernate.type.CollectionType.replace(CollectionType.java:582)
at org.hibernate.type.TypeHelper.replace(TypeHelper.java:178)
at org.hibernate.event.def.DefaultMergeEventListener.copyValues(DefaultMergeEventListener.java:563)
at org.hibernate.event.def.DefaultMergeEventListener.entityIsPersistent(DefaultMergeEventListener.java:288)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:261)
at org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84)
at org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:851)
at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855)
at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:686)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
at $Proxy33.merge(Unknown Source)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:360)
at ....JpaProvider.save(JpaProvider.java:161)
at ....DataModelTest.testAccountRole(DataModelTest.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
at …Run Code Online (Sandbox Code Playgroud) 例如,由于文档(http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relational-data)的一对多,您可以通过以下方式链接两个模型(one-many = company-zone):
$defaultZone = new Zone;
$defaultZone->name = Zone::DEFAULT_ZONE;
$company->link('zones', $defaultZone);
Run Code Online (Sandbox Code Playgroud)
但是当你有转机表时,它如何适用于多对多关系tbl_user_market(user_id, market_id)?
我有一个与另一个对象有多对多关系的对象.
在Django Admin中,这会在多个选择框中生成一个很长的列表.
我想过滤ManyToMany关系,因此我只获取客户选择的City中可用的类别.
这可能吗?我是否必须为它创建一个小部件?如果是这样 - 我如何将行为从标准的ManyToMany字段复制到它,因为我也想要filter_horizontal函数.
这些是我的简化模型:
class City(models.Model):
name = models.CharField(max_length=200)
class Category(models.Model):
name = models.CharField(max_length=200)
available_in = models.ManyToManyField(City)
class Customer(models.Model):
name = models.CharField(max_length=200)
city = models.ForeignKey(City)
categories = models.ManyToManyField(Category)
Run Code Online (Sandbox Code Playgroud) 在与这个问题几乎完全相同的情况下,只有我正在寻找一种与另一种类型没有任何多对多关系的记录.
所以,假设我有一组患者和一组清单.患者可以属于多个列表,并且列表可以包含多个患者.
如何查找不在任何列表中的所有患者? 我正在使用核心数据模型.
更新:想出来,但由于我的声誉<100,我无法回答我自己的问题.这是我做的:
NSPredicate *predicate = [NSPredicate
predicateWithFormat:@"lists.@count == 0"];
[fetchRequest setPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
然后,当我运行获取请求时,它只会启动没有附加列表的患者.
iphone many-to-many core-data nsfetchedresultscontroller ios
Foo有:
@ManyToMany(mappedBy = "foos")
private Set<Bar> bars
Run Code Online (Sandbox Code Playgroud)
和酒吧有:
@ManyToMany
private Set<Foo> foos
Run Code Online (Sandbox Code Playgroud)
除了table被称为foo_bar或bar_foo之外,mappedBy属性的位置与双向关系有什么不同; 如果没有mappedBy属性,我会得到两个连接表,包括foo_bar和bar_foo.
我无法获得has_many:通过使用Rails 4强大参数的关联.我有一个名为的模型Checkout,我需要Employee在新的结帐表单中从模型中选择一个人.结账和员工通过Employment模型关联.
我尝试创建新的结帐时收到此错误:
NoMethodError in CheckoutsController#create
undefined method `employee' for #<Checkout:0x007ff4f8d07f88>
Run Code Online (Sandbox Code Playgroud)
似乎我的创建操作,结帐参数或我的新结帐表单都有问题.这是创建动作:
def create
@user = current_user
@checkout = @user.checkouts.build(checkout_params)
respond_to do |format|
if @checkout.save
format.html { redirect_to @checkout, notice: 'Checkout was successfully created.' }
else
format.html { render action: 'new' }
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的结帐参数:
def checkout_params
params.require(:checkout).permit(:job, :employee_ids, :shift, :date, :hours, :sales, :tips, :owed, :collected, :notes)
end
Run Code Online (Sandbox Code Playgroud)
我的新结账表格:
<div class="field">
<%= f.label :employee %><br>
<%= f.collection_select(:employee_ids, Employee.all.collect, :id, :full_name, {:prompt => "Please …Run Code Online (Sandbox Code Playgroud) 我有一些与多对多关系的问题,保存了创建视图的结果.
我想为新的用户配置文件创建一个创建页面,该配置文件有一个清单,可以让他们选择课程(多对多关系).我的视图从Courses数据库中获取记录,并使用复选框显示所有记录.
一旦用户发布数据,我想更新我的userprofile模型,以及courses多对多关系.那是我遗漏的代码!
我是MVC的新手,我一直在研究,但我还没有做到.
我遵循这个例子:http: //www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/updating-related-data-with-the-entity-framework-in-an- ASP净MVC应用程序
这是模型:
public class UserProfile
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Courses> usercourses { get; set; }
}
public class Courses
{
public int CourseID { get; set; }
public string CourseDescripcion { get; set; }
public virtual ICollection<UserProfile> UserProfiles { get; set; }
}
public class UserProfileDBContext : DbContext
{
public DbSet<UserProfile> UserProfiles { …Run Code Online (Sandbox Code Playgroud) asp.net-mvc many-to-many entity-framework razor asp.net-mvc-3
如何首先使用Entity Framework代码和linq查询多对多关系?问题是EF自动创建关系表.所以,我没有在我的背景下.
这是关系模型:

我需要一个特定Category_Id的文章列表,基本上复制类似的东西:
select a.Id, a.Title,a.ShortDescription
from Articles a
join CategoryArticles ca on ca.Article_Id=a.Id
where ca.Category_Id = @parameter
Run Code Online (Sandbox Code Playgroud)
但是我的dbcontext只有:
public DbSet<Article> Articles { get; set; }
public DbSet<Category> Categories { get; set; }.
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
在尝试获得@OneToMany之间的关系时Article,HeaderField我可能有不正确的映射,导致:
init:
Deleting: /home/thufir/NetBeansProjects/USENET/build/built-jar.properties
deps-jar:
Updating property file: /home/thufir/NetBeansProjects/USENET/build/built-jar.properties
compile:
run:
DEBUG: nntp: newsrc loading /home/thufir/.newsrc
DEBUG: nntp: newsrc load: 1 groups in 31ms
[EL Info]: 2012-07-31 02:05:05.677--ServerSession(8979162)--EclipseLink, version: Eclipse Persistence Services - 2.3.0.v20110604-r9504
[EL Info]: 2012-07-31 02:05:06.778--ServerSession(8979162)--file:/home/thufir/NetBeansProjects/USENET/build/classes/_USENETPU login successful
[EL Warning]: 2012-07-31 02:05:06.903--ServerSession(8979162)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'usenet.HEADERFIELD' doesn't exist
Error Code: 1146
Call: ALTER TABLE HEADERFIELD DROP FOREIGN KEY FK_HEADERFIELD_ARTICLE_ID
Query: DataModifyQuery(sql="ALTER TABLE HEADERFIELD DROP …Run Code Online (Sandbox Code Playgroud) many-to-many ×10
jpa ×3
django ×2
orm ×2
activerecord ×1
annotations ×1
asp.net-mvc ×1
c# ×1
core-data ×1
django-admin ×1
django-forms ×1
hibernate ×1
ios ×1
iphone ×1
java ×1
jpql ×1
linq ×1
php ×1
python ×1
razor ×1
yii2 ×1