跳至内容
菜单
此问题已终结
3 回复
3720 查看

Hello, i would like to have  a custom  form in my website so any customer could fill it and it would add in my database.

But i don't know where i can find information or example to understand how to do it


thx for ur help


Ok so i found on net an example but i have an error 

this my form


xml version="1.0" encoding="UTF-8" ?>

id="menu_patient_form12" model="website.menu">
name="name">create patient
name="url">/patient_webform
name="parent_id" ref="website.main_menu"/>
name="sequence">55

id="create_patient" name="Create Patient">
t-call="website.layout">
id="wrap">
class="oe_structure">
class="container">
role="form" action="/create/webpatient" method="post">
type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
class="form-group">

type="text" name="patient_name" t-att-value="patient_name" id="patient_name"
class="form-control" placeholder="joe li" required ="required"/>

class="clearfix oe_login_buttons">









my model :

from odoo import models, fields

class HaemertestPatient (models.Model):
_name= "haemer.patient"
_description = "Our Patient"

patient_name = fields.Char(string='Name', required=True, tracking=True)

my controller : 

from odoo import http
from odoo.http import request


class Hospital(http.Controller):

@http.route('/patient_webform/', type="http",auth="public",website="true")
def patient_webform(self,**kw):
return http.request.render('theme_haemertest.create_patient',{})

@http.route('/create/webpatient/', type="http",auth="public",website="true")
def create_webpatient(self,**kw):
request.env('haemer.patient').sudo().create(kw)
return request.render("theme_haemertest.create_patient", {})


and this is the output error : 


Traceback (most recent call last):
  File "C:\odoo\odoo\odoo\addons\base\models\ir_http.py", line 237, in _dispatch
    result = request.dispatch()
  File "C:\odoo\odoo\odoo\http.py", line 810, in dispatch
    r = self._call_function(**self.params)
  File "C:\odoo\odoo\odoo\http.py", line 359, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\odoo\odoo\odoo\service\model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\odoo\odoo\odoo\http.py", line 348, in checked_call
    result = self.endpoint(*a, **kw)
  File "C:\odoo\odoo\odoo\http.py", line 916, in __call__
    return self.method(*args, **kw)
  File "C:\odoo\odoo\odoo\http.py", line 535, in response_wrap
    response = f(*args, **kw)
  File "c:\odoo\custom_addons\theme_haemertest\controllers\hospital.py", line 13, in create_webpatient
    request.env('haemer.patient').sudo().create(kw)
  File "C:\odoo\odoo\odoo\api.py", line 574, in __call__
    return Environment(cr, uid, context, su)
  File "C:\odoo\odoo\odoo\api.py", line 508, in __new__
    transaction = cr.transaction
Exception
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "C:\odoo\odoo\odoo\addons\base\models\ir_http.py", line 237, in _dispatch
    result = request.dispatch()
  File "C:\odoo\odoo\odoo\http.py", line 810, in dispatch
    r = self._call_function(**self.params)
  File "C:\odoo\odoo\odoo\http.py", line 359, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "C:\odoo\odoo\odoo\service\model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "C:\odoo\odoo\odoo\http.py", line 348, in checked_call
    result = self.endpoint(*a, **kw)
  File "C:\odoo\odoo\odoo\http.py", line 916, in __call__
    return self.method(*args, **kw)
  File "C:\odoo\odoo\odoo\http.py", line 535, in response_wrap
    response = f(*args, **kw)
  File "c:\odoo\custom_addons\theme_haemertest\controllers\hospital.py", line 13, in create_webpatient
    request.env('haemer.patient').sudo().create(kw)
  File "C:\odoo\odoo\odoo\api.py", line 574, in __call__
    return Environment(cr, uid, context, su)
  File "C:\odoo\odoo\odoo\api.py", line 508, in __new__
    transaction = cr.transaction
AttributeError: 'str' object has no attribute 'transaction'


形象
丢弃
编写者

I updated my code

编写者

Any idea ?

编写者 最佳答案

sadly she doesn't explain how to change the action

形象
丢弃

By default Odoo does not have any option to change the action.

最佳答案

This might help 

https://www.youtube.com/watch?v=KoWVm2DcQJE

形象
丢弃