小编Sho*_*jaz的帖子

如何在Django REST Framework中更改字段名称

我试图在DRF Serializer中更改模型字段名称,如SQL中的别名.我尝试过不同的方法,但不能成功.

models.py

class Park(models.Model):
    name = models.CharField(max_length=256)
    alternate_name = models.CharField(max_length=256, blank=True)
    objects = models.GeoManager()

    class Meta:
        db_table = u'p_park'

    def __unicode__(self):
        return '%s' % self.name

    def alias_alternate_name(self):
        return self.alternate_name
Run Code Online (Sandbox Code Playgroud)

serializers.py

class ParkSerializer(serializers.ModelSerializer):

    location = serializers.Field(source='alias_alternate_name')
    #location = serializers.SerializerMethodField(source='alias_alternate_name')

    #alternate_name as location


    class Meta:
        model = Park
        fields = ('id', 'name', 'location')
Run Code Online (Sandbox Code Playgroud)

我也尝试在Django Queryset中添加别名但无法更改.

更新

这是我面临的例外

/ ViewName /'module'对象的AttributeError没有属性'Field'

我怎样才能做到这一点?

谢谢

django django-rest-framework

78
推荐指数
3
解决办法
4万
查看次数

将额外的参数传递给Django Rest Framework中的Serializer Class

我想从Viewset向DRF Serializer类传递一些参数,所以我试过这个:

class OneZeroSerializer(rest_serializer.ModelSerializer):

    def __init__(self, *args, **kwargs):
        print args # show values that passed

    location = rest_serializer.SerializerMethodField('get_alternate_name')

    def get_alternate_name(self, obj):
        return ''


    class Meta:
        model = OneZero

        fields = ('id', 'location')
Run Code Online (Sandbox Code Playgroud)

查看

class OneZeroViewSet(viewsets.ModelViewSet):

   serializer_class = OneZeroSerializer(realpart=1)
   #serializer_class = OneZeroSerializer

   queryset = OneZero.objects.all()
Run Code Online (Sandbox Code Playgroud)

基本上我想基于querystring从视图传递一些值到Serializer类,然后将这些值分配给字段.

这些字段不包含在Model中,实际上是动态创建的字段.

在这个问题stackoverflow中的情况相同,但我无法理解答案.

任何人都可以在这种情况下帮助我或建议我更好的选择.

python django rest django-rest-framework

56
推荐指数
4
解决办法
4万
查看次数

如何在Serializer Django Rest Framework中访问QueryString值

我试图访问序列化程序类中的查询字符串值.

class OneZeroSerializer(rest_serializer.ModelSerializer):

    location = rest_serializer.SerializerMethodField('get_alternate_name')

    def get_alternate_name(self, obj):
        view = self.context['view']
        print view.kwargs['q']  #output is {}
        return 'foo'


    class Meta:
        model = OneZero

        fields = ('id', 'location')
Run Code Online (Sandbox Code Playgroud)

查看

class OneZeroViewSet(viewsets.ModelViewSet):

   serializer_class = OneZeroSerializer

   queryset = OneZero.objects.all()
Run Code Online (Sandbox Code Playgroud)

这是访问查询字符串的正确方法吗?

django django-rest-framework

24
推荐指数
3
解决办法
7523
查看次数

指定密钥太长; 最大密钥长度为767字节实体框架6中的Mysql错误

我已经开始使用visual studio 2012开发Asp.net Mvc-5应用程序了.所以我从nuget下载了Entity Framework-6和MySQL 6.8.3.0.当我尝试使用db Context命令创建数据库时

dbContext.Database.CreateIfNotExists();
Run Code Online (Sandbox Code Playgroud)

抛出此异常.

指定密钥太长; 最大密钥长度为767字节

我已经对它进行了搜索,但找不到任何解决方案.我在搜索过程中得到的一件事就是Unicode字符问题.我不知道如何处理这个问题.

更新

我正在使用以下配置

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我的数据库上下文类.我已经删除了所有模型,只留下一个模型

public class MyContext : DbContext
{
    public MyContext()
        : base("myconn")
    {
        this.Configuration.ValidateOnSaveEnabled = false;
    }

    protected override void OnModelCreating(DbModelBuilder …
Run Code Online (Sandbox Code Playgroud)

c# mysql entity-framework entity-framework-6

17
推荐指数
2
解决办法
2万
查看次数

部分视图问题 - 未定义jQuery

我在ASP.NET MVC 5项目中面临jQuery加载问题.我正在尝试加载部分视图,所以我已经使用过了

@ Html.Action("GetView","Home")

部分视图包含一些jQuery函数.当它加载时它显示jQuery未定义的消息,但jQuery正在主页上工作.

所以我尝试了另外两种方法来加载局部视图,并且没有使用这些方法的jQuery问题

@Html.Partial("_viewname")

@Ajax.BeginForm()
Run Code Online (Sandbox Code Playgroud)

家庭控制器

public class HomeController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult GetView(string id = "")
        {
           return PartialView("_ViewName");

        }
    }
Run Code Online (Sandbox Code Playgroud)

_Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
    <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
    @Scripts.Render("~/bundles/modernizr")
    @RenderSection("Head", false)
</head>
<body>
    <section >
        <div>
            @RenderBody()
        </div>

        <div>
            @RenderSection("Sidebar", false)
        </div>

    </section>

    <!-- jQuery -->
    @Scripts.Render("~/bundles/jquery")
    @RenderSection("Scripts", false)
</body>
Run Code Online (Sandbox Code Playgroud)

父页面Index.cshtml

@{
    ViewBag.Title = "Admin";
}

<div id="main_content">
    @Html.Action("GetView", "Packages") …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-5

7
推荐指数
1
解决办法
1万
查看次数

Python:如何将Azure Blob从一个容器移动或复制到另一个容器

我在项目中使用Microsoft Azure SDK for Python.我想将Blob从一个容器移动或复制到另一个容器.例如

https://demostorage.blob.core.windows.net/image-container/pretty.jpg
Run Code Online (Sandbox Code Playgroud)

我想把这个blob移动到

https://demostorage.blob.core.windows.net/demo-container/
Run Code Online (Sandbox Code Playgroud)

我在python SDK中找到了以下方法但无法理解它.

def copy_blob(self, container_name, blob_name,...):
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?谢谢

python azure azure-storage-blobs

7
推荐指数
3
解决办法
5461
查看次数

Django Query:如何使用sql"union"和"not in"函数

如何在django查询中使用union和"not in"函数.我搜索过它但找不到任何例子

SELECT id,address
    FROM tbl_nt
    WHERE st_id IN (1,2) AND name = 'foo'
    UNION (
        SELECT d.id,d.addrses
            FROM tbl_nt_123 d
            WHERE d.name='foo' AND condition_id NOT IN (
                SELECT condition_id 
                    FROM tbl_conditions
                    WHERE version_id = 5
            )
    )
Run Code Online (Sandbox Code Playgroud)

我已尝试此查询较低的部分,但没有工作

tbl_nt_123.objects.values_list('id', 'address').exclude(
    condition_id=tbl_conditions 
).objects.filter(version_id=5).values_list(
    'condition_id', flat=True)
)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

请参考我一些好的链接或书籍,以了解提前django查询.

谢谢

python django django-queryset

6
推荐指数
1
解决办法
2470
查看次数

Django REST框架:如何在URL中添加前缀用于版本控制

我正在尝试为REST应用程序创建版本.这是我的URL Examle

www.myapi.com/foo [default version]
www.myapi.com/v1/foo [version one]
Run Code Online (Sandbox Code Playgroud)

这是项目结构

??? __init__.py
??? settings.py
??? urls.py
??? default_app
? ??? __init__.py
? ??? serializer.py
? ??? models.py
? ??? views.py
? ??? urls.py
? 
??? v1_app
??? __init__.py
??? serializer.py
??? models.py
??? views.py
??? urls.py
Run Code Online (Sandbox Code Playgroud)

default_app urls.py

from django.conf.urls import *
from default_app import views as df_views
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'foo', df_views.viewname, "foo")
urlpatterns = router.urls
Run Code Online (Sandbox Code Playgroud)

v1_app urls.py

from django.conf.urls import *
from v1_app import views …
Run Code Online (Sandbox Code Playgroud)

django django-urls django-rest-framework

6
推荐指数
1
解决办法
2119
查看次数

Asp.NET MVC REST API:如何获取客户端主机名

我正在ASP.NET MVC3中开发REST API应用程序.我试图让客户端客户端HOST名称在行动但不能成功.我在多个应用程序中使用此API,因此我想记录域名.

链接1

 HttpContext.Current.Request.UserHostAddress;
 System.Web.HttpContext.Current.Request.UserHostName;
 System.Web.HttpContext.Current.Request.UserHostAddress;
Run Code Online (Sandbox Code Playgroud)

链接2

private string GetClientIp(HttpRequestMessage request)
{
    if (request.Properties.ContainsKey("MS_HttpContext"))
    {
        return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
    }
    else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
    {
        RemoteEndpointMessageProperty prop;
        prop = (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name];
        return prop.Address;
    }
    else
    {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

所有这些选项提供IP地址,但我想获得主机名

API控制器 www.myapi.com

public class TESTController : ApiController
{
    public TESTController()
    {
    }

    [HttpGet]
    public object Add(string data = "")
    {
        try
        {
            string result = "0";

            if (!string.IsNullOrEmpty(data))
            {
                //should be www.myapiconsume.com
                var host = System.Web.HttpContext.Current.Request.UserHostName;
                var ip = System.Web.HttpContext.Current.Request.UserHostAddress;
            }

            return …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-3 asp.net-web-api

5
推荐指数
1
解决办法
9216
查看次数

通用存储库模式有重复的代码,那么有什么好处呢?

我在c#中理解存储库模式.当我研究通用存储库模式时,我很困惑.它有很多重复.我对这种模式有一些疑问.

我使用实体框架代码第一种方法,我有两个模型类

学生
教师

如果我有一个通用接口,我将使用多少通用接口

public interface IRepository<TEntity>
{
   IQueryable<TEntity> FindAll(Expression<Func<TEntity, bool>> where = null);

   TEntity FindOne(Expression<Func<TEntity, bool>> where = null);       
}
Run Code Online (Sandbox Code Playgroud)

因此,此接口可用于两个模型类.如果Student类有更多的方法可以定义这些方法?例如

public class StudentRepo<TEntity> : IRepository<TEntity> where TEntity : class
{
    public virtual IQueryable<TEntity> FindAll(Expression<Func<TEntity, bool>> where = null)
    {
        return null != where ? Context.Set<TEntity>().Where(where) : Context.Set<TEntity>();
    }

    public virtual TEntity FindOne(Expression<Func<TEntity, bool>> where = null)
    {
        return FindAll(where).FirstOrDefault();
    }

    public void update()
    {
    }

    public int FindId()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我添加了两个新方法update(),FindId() …

c# repository-pattern entity-framework-4 ef-code-first

4
推荐指数
2
解决办法
4997
查看次数