2016-11-12 1 views
1

J'essaie d'hériter du menu Paramètres du site Web et d'avoir deux vues. website.config.settings est un models.TransientModelHérite de TransientModel et de deux vues (website.config.settings)

Lorsque j'en hérite et que je regarde avec un nouveau menuitem, il écrase la vue précédente. Comme - Il y a deux vues maintenant, le nouvel enregistrement que j'ai défini les paramètres d'événement du site Web nommés. Lorsque je clique dessus, il charge la nouvelle vue modifiée mais lorsque je clique sur le menu Paramètres existant, il ne montre rien.

En résumé, le menu des paramètres du site Web existant ne fonctionne pas et le nouveau menu le fait. J'ai besoin des deux.

Le code py et vue record je suivent -

class cofair_website_design_config(models.TransientModel): 
    _name = 'website.config.settings' 
    _inherit = 'website.config.settings' 

    event_title = fields.Char(related='website_id.event_title', string='Event Title') 

XML:

<record id="view_website_event_config_settings" model="ir.ui.view"> 
     <field name="name">Website Event Settings</field> 
     <field name="model">website.config.settings</field> 
     <field name="arch" type="xml"> 
      <form class="oe_form_configuration"> 
       <header> 
        <button string="Apply" type="object" name="execute" class="oe_highlight"/> 
        <button string="Cancel" type="object" name="cancel" class="oe_link"/> 
       </header> 
       <div> 
        <group string="Event Page Section"> 
         <group> 
          <field name="event_title_color"/> 
         </group> 
        </group> 
       </div> 
      </form> 
     </field> 
</record> 

<record id="action_website_event_configuration" model="ir.actions.act_window"> 
    <field name="name">Website Event Settings</field> 
    <field name="res_model">website.config.settings</field> 
    <field name="view_mode">form</field> 
    <field name="target">inline</field> 
    <field name="view_id" ref="view_website_event_config_settings"/> 
</record> 

<menuitem id="menu_website_event_settings" parent="website.menu_website_configuration" name="Website Event Settings" action="action_website_event_configuration"/> 

Répondre

2

Au lieu de renommer les modules (ce qui provoque une erreur relationnelle), j'ai trouvé une solution de contournement. J'ai hérité les principaux paramètres et y mettre un identifiant de vue et a appelé avec menuitem -

<!-- Bring settings menu out --> 
<record id="website.action_website_configuration" model="ir.actions.act_window"> 
    <field name="name">Website Settings</field> 
    <field name="res_model">website.config.settings</field> 
    <field name="view_mode">form</field> 
    <field name="target">inline</field> 
    <field name="view_id" ref="website.view_website_config_settings"/> 
</record> 

<menuitem id="website.menu_website_website_settings" parent="website.menu_website_configuration" name="Website Admin" action="website.action_website_configuration"/> 

Alors j'ai appelé mon action d'enregistrement et chargé de la vue et de l'action. Un autre point positif est que j'ai dû montrer website_id pour montrer les valeurs de sites web spécifiques ou le modèle transitoire sera toujours vide.

+0

OK, super ... vous devriez marquer votre réponse comme acceptée puisque vous l'avez compris et cela a fonctionné pour vous – danidee

1

Modifier l'attribut _name dans votre définition du modèle à quelque chose d'autre et aussi modifier le xml appropraitely.

class cofair_website_design_config(models.TransientModel): 
    _name = 'something.else' 
    _inherit = 'website.config.settings' 

    event_title = fields.Char(related='website_id.event_title', string='Event Title') 

ir.ui.view

<field name="model">something.else</field> 


et ir.actions.act_window

<field name="res_model">something.else</field> 

Cela devrait copier tous les champs et les méthodes de website.config.settings au nouveau modèle something.else et le garder séparé de website.config.settings

+0

J'ai essayé cela mais website.config.settings ont la référence à l'autre modèle et il ne laissera pas la nouvelle vue sauver. J'ai trouvé une solution de contournement, en héritant l'action d'enregistrement de site Web et menutime, j'ai mis un Id de vue dans l'enregistrement et l'élément de menu principal écrasé. Par cela je n'ai pas eu à changer le nom du modèle. –